import junit.framework.TestCase;

import org.junit.Before;
import org.junit.Test;

public class TesteRevista extends TestCase {
	Revista revista;
	Revista periodico;
	
	@Before
	public void setUp() throws Exception {
		revista = new Revista("Magazine", "Revista", "Joao", "1234567890123");
		periodico = new Revista("sbc", "Periodico");
	}
	
	@Test
	public void testRevista() throws Exception {

		Revista revista1 = new Revista("Saber", "Revista");
		
		try {
			Revista revista2 = new Revista("Saber", "");
			Revista revista3 = new Revista("", "");
			fail("Esperava-se uma excecao de titulo ou tipo em branco");
		} catch (Exception e) {
			assertEquals("Erro no Titulo ou Tipo", "Titulo ou Tipo em branco", e.getMessage());
		}
		
		try {
			Revista revista4 = new Revista("Magazine", null);
			Revista revista5 = new Revista(null, null);
			fail("Esperava-se uma excecao de titulo ou tipo nulo");
		} catch (Exception e) {
			assertEquals("Erro no Titulo ou Tipo", "Titulo ou Tipo nulo", e.getMessage());
		}
		
		try {
			Revista revista6 = new Revista("Magazine", "Livro");
			Revista revista7 = new Revista("sbc", "Tese");
			Revista revista8 = new Revista("sbc", "Dissertacao");
			fail("Esperava-se uma excecao de tipo diferente");
		} catch (Exception e) {
			assertEquals("Erro no Tipo", "Tipo diferente", e.getMessage());
		}
	}
	
	@Test
	public void testGetTitulo() {
		assertEquals("get titulo com erro", "Magazine", revista.getTitulo());
		revista = null;
	}
	
	@Test
	public void testSetTitulo() {
		revista.setTitulo("Pascal");
		assertEquals("set titulo com erro", "Pascal", revista.getTitulo());
		revista = null;
	}
	
	@Test
	public void testGetAutor() {
		assertEquals("get autor com erro", "Joao", revista.getAutor());
		revista = null;
	}
	
	@Test
	public void testSetAutor() {
		revista.setAutor("Joao");
		assertEquals("set autor com erro", "Joao", revista.getAutor());
		revista = null;
	}
	
	@Test
	public void testGetTipo() {
		assertEquals("get tipo com erro", "Revista", revista.getTipo());
		revista = null;
	}
	
	@Test
	public void testSetTipo() {
		revista.setTipo("Tese");
		assertEquals("set tipo com erro", "Tese", revista.getTipo());
		revista = null;
	}
	
	@Test
	public void testGetISBN() {
		assertEquals("get isbn com erro", "1234567890123", revista.getISBN());
		revista = null;
	}
	
	@Test
	public void testSetISBN() {
		revista.setISBN("3210987654321");
		assertEquals("set isbn com erro", "3210987654321", revista.getISBN());
		revista = null;
	}
	
	@Test
	public void testGetDisponibilidade() {
		assertEquals("get disponibilidade com erro", true, revista.getStatus());
		revista = null;
	}
	
	@Test
	public void testSetDisponibilidade() {
		revista.SetStatus(false);
		assertEquals("set disponibilidade com erro", false, revista.getStatus());
		revista = null;
	}

}
